package eventos.abrir;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

import logica.SinNombreException;

import controlador.ControladorCrearProyecto;
import controlador.ControladorEditor;
import controlador.CrearProyectoException;

import vista.objetos.ProyectoGraficable;
import vista.ventanas.VentanaIncial;
import xml.XMLManager;

public class EventoAbrirEditor extends MouseAdapter{
	
	private VentanaIncial ventanaIncial;
	private ControladorEditor controlador;
	
	public EventoAbrirEditor(VentanaIncial ventana, ControladorEditor controlador)
	{
		super();
		this.ventanaIncial = ventana;
		this.controlador = controlador;
	}
	             
	public void mouseClicked(MouseEvent e)
	{ 
		JFileChooser chooser = new JFileChooser();
		chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		
		int returnVal = chooser.showOpenDialog(null);
		
		if (returnVal != JFileChooser.APPROVE_OPTION)
			return;
		
		ProyectoGraficable proyecto;
		
		try 
		{
			String path = chooser.getSelectedFile().toString();
			
			proyecto = ControladorCrearProyecto.abrirProyectoExistente(path);
		
			Boolean exito = XMLManager.getInstance().hidratar(proyecto);

			if (!exito) {
				JOptionPane.showMessageDialog(this.ventanaIncial, "Error al cargar el proyecto", "Error", JOptionPane.ERROR_MESSAGE);
			}
			ventanaIncial.setVisible(false);
			ventanaIncial = null;
			
			controlador.abrirVentanaEditor(proyecto);
		}
		catch (SinNombreException e1) 
		{
			JOptionPane.showMessageDialog(this.ventanaIncial, e1.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
		}
		catch (CrearProyectoException e2)
		{
			JOptionPane.showMessageDialog(this.ventanaIncial, e2.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
		}
		
	}
}
